This page is the exhaustive list: every IRCv3 capability HexDroid negotiates, and every setting in the app. If you are looking for what HexDroid does rather than what it supports, start with Features.

IRCv3 capabilities

Every capability HexDroid negotiates during the connection handshake, and what it does with each one. All of them can be switched off individually per network under IRCv3 Capabilities in network settings. Badges: graduated = finalized spec · draft = draft spec · vendor = implementation-specific.

Core Message Infrastructure

CapabilityStatusWhat HexDroid does
message-tagsgraduatedParses and propagates @tag=value metadata on incoming messages
server-timegraduatedDisplays accurate timestamps on all messages, including replayed history
echo-messagegraduatedMatches the server’s copy of each message you send to the line already shown, so your log carries the server’s timestamp. A message the server refuses (for example “Cannot send to channel”) is marked as not sent
labeled-responsegraduatedCorrelates command responses with their triggering requests, including the echo, refusal or ACK for each message you send
batchgraduatedProcesses grouped message batches atomically. netsplit / netjoin batches collapse the quit/join flood into a single summary line (“Netsplit (a.net ↔ b.net) - N users affected”) while the nick list still updates per user
utf8onlygraduatedSignals UTF-8 capability; enforces UTF-8 output on utf8only networks
message-idsgraduatedTracks unique msgid tags for deduplication of chathistory replays
standard-repliesgraduatedParses FAIL/WARN/NOTE replies and surfaces them contextually per buffer
draft/extended-isupportdraftFetches server metadata before the connection finishes registering. HexDroid sends the ISUPPORT command as soon as the capability is acknowledged, so tokens like CLIENTTAGDENY, NETWORK and the filehost endpoint are known before the first message is sent rather than after. Replies arrive in a draft/isupport batch when batch is also enabled, and token withdrawals (-KEY) are honoured.
stsgraduatedStrict Transport Security. A plaintext connection that receives sts port= reconnects over TLS immediately; a TLS connection that receives sts duration= stores a per-host TLS-only policy that also disables the invalid-certificate override until it expires. A stale policy can be cleared from network settings.
draft/multilinedraftReceives messages that exceed 512 bytes or contain line breaks as a single grouped message instead of one IRC line per visual line. Uses the draft/multiline BATCH type with the +draft/multiline-concat tag for flood-control splits. Both the draft and forward-compat graduated multiline are negotiated.

History & Read State

CapabilityStatusWhat HexDroid does
chathistorygraduatedServer-side message history. Recent messages are requested on join (LATEST); scrolling to the top of a buffer fetches the previous page (BEFORE) and keeps going as you scroll; on connect, TARGETS lists the buffers the server has stored history for and each one is caught up from your newest local message (AFTER), so a private message sent while you were offline is waiting for you rather than appearing only when the sender speaks again
draft/chathistorydraftSame as above for servers on the earlier draft spec. Request sizes respect the server's CHATHISTORY limit, and selectors fall back to a supported reference type per MSGREFTYPES.
draft/chathistory-targetsdraftThe batch the TARGETS reply arrives in. Channels in the list are skipped: they are caught up by the request sent when you rejoin, and re-opening a channel you deliberately closed would undo your own tidying up
draft/event-playbackdraftReplays channel state events (joins, modes) alongside message history
draft/read-markerdraftSyncs read position with the server for multi-client read-state tracking
soju.im/readvendorsoju-specific read-marker sync

Membership & Presence

CapabilityStatusWhat HexDroid does
account-notifygraduatedUpdates account name when a user logs in/out of services
away-notifygraduatedTracks away/back state for all channel members in real time; away users are dimmed in the member list
chghostgraduatedUpdates the user's displayed hostmask when it changes without a rejoin
extended-joingraduatedReceives account name and real name in JOIN; displayed in user info panel
multi-prefixgraduatedShows all channel prefixes a user holds (e.g. @+nick for op+voice)
userhost-in-namesgraduatedReceives full nick!user@host in the 353 NAMES reply. Off by default: WHOX already supplies the same detail on the servers that offer it
invite-notifygraduatedNotifies you when another user is invited to a channel you're in
monitorgraduatedWatches for a list of nicks coming online/offline
extended-monitorgraduatedExtended MONITOR with account and away state in notifications. Both the graduated name and the legacy draft/extended-monitor are negotiated.
WHOXvendorExtended WHO. On servers that advertise WHOX in ISUPPORT, joining a channel sends WHO #chan %tuhsnfar,42, so ident, host, account, away state and oper status are known for every member without a separate lookup. Not a capability; driven by ISUPPORT, toggleable per network
pre-awaygraduatedSends AWAY before 001 registration when configured as away

Messaging

CapabilityStatusWhat HexDroid does
account-taggraduatedSurfaces the sender's services account name as a per-message tag
saslgraduatedAuthenticates using PLAIN, SCRAM-SHA-256, or EXTERNAL during handshake
setnamegraduatedEnables /setname to change your real name on the fly without reconnecting, and lets extended-monitor report real-name changes. On by default for new networks; existing networks keep their saved setting
+typingdraftTyping indicators. Shows when someone in a channel or query is composing, and sends your own state as you type. Carried as the +typing client tag rather than a capability of its own, so it rides message-tags and a server’s CLIENTTAGDENY policy is respected. Both halves are toggleable under Privacy; sending is off by default
draft/message-reactionsdraftReceives TAGMSG-based emoji reactions; displayed inline on messages. Removal is sent as both +draft/unreact (current react spec) and the older +draft/react-removed, and replies carry both +draft/reply and the ratified +reply tag.
draft/message-redactiondraftMessage deletion. Long-press one of your own messages › Delete message (or /redact <msgid>) sends REDACT; incoming redactions replace the message with a tombstone for everyone. Both the draft and forward-compat message-redaction names are negotiated.
draft/oper-tagdraftMessages and notices from IRC operators are marked with an amber ★ before the nick. Reads the draft/oper tag and the eventual ratified oper name; rides message-tags, no extra negotiation.
bot mode / taggraduatedUsers flagged as bots are badged [bot] in the member list, on their messages, and in the nick tap sheet. Detected from the BOT ISUPPORT mode letter in WHO/WHOX flags and from the bot message tag; rides message-tags.
+draft/channel-contextdraftA private message carrying this client tag is annotated with the channel it relates to ([#channel] prefix), so a PM reply to something said in a channel keeps its context. Accepts the draft and ratified +channel-context forms.
draft/metadata-2draftUser and channel metadata. HexDroid subscribes to display-name, avatar, color, and status on connect: the display name appears beside the nick, a color tints the nick, and tapping a nick shows their avatar and status. Avatars also show in the member list and in notifications. A metadata editor (overflow menu › Edit metadata, or /metadata) sets your own keys - display name, status, colour, avatar and more - and reads or sets keys on another user or a channel. Deferred syncs (RPL_METADATASYNCLATER) are retried automatically. Requires the batch capability, per the spec. On soju, which keeps no metadata for users, only soju.im/muted is subscribed (see below) and your own keys are not sent.
draft/account-registrationdraftStandardized account creation without NickServ syntax. A guided Register account dialog (overflow menu) walks through register → email-verify → done, adapting its fields to the server's advertised flags (email required, custom account names), with an option to save the password for SASL auto-login. The /register and /verify commands drive the same REGISTER/VERIFY flow; a bare /verify <code> targets the account the server just asked to verify, and failure codes are translated into actionable hints. On servers without the cap, /register points at NickServ instead.
draft/relaymsgdraftRenders RELAYMSG-relayed messages from bridges (Discord, Matrix, Telegram) under the original sender’s name rather than the bridge bot’s. Off by default
draft/channel-renamedraftFollows channel renames in real time. The buffer updates in place, keeping its scrollback and read state, so there is nothing to re-join
draft/no-implicit-namesdraftOpt out of the implicit NAMES list on join. Both the draft and graduated no-implicit-names names are negotiated. Off by default; the soju-specific form below is on

Multimedia

CapabilityStatusWhat HexDroid does
draft/ICONdraftServer icon. When a server advertises ICON=<url> or draft/ICON=<url> (with optional {size} template), the icon is shown next to the network name on the Networks screen, in the sidebar, and in the network switcher. Fetched only when image previews are enabled, only over HTTPS, and never on proxied (Tor/SOCKS) profiles.

Push

CapabilityStatusWhat HexDroid does
draft/webpushdraftWeb Push notifications. The server can reach you with a highlight or private message while no connection is open, so the background connection stops being the only way to be notified. The endpoint comes from a UnifiedPush distributor on the device and is handed over with WEBPUSH REGISTER; the server’s application-server key is read from the VAPID ISUPPORT token. Off by default and requires a distributor app. See Notifications

Bouncer/Vendor

CapabilityStatusWhat HexDroid does
znc.in/server-time-isovendorParses ZNC's legacy server-time format for accurate timestamps on playback
znc.in/playbackvendorUses ZNC's playback module to request missed messages
soju.im/bouncer-networksvendorLists the upstream networks of your soju account with their address, TLS and the last connection error, in the Bouncer networks card of the soju profile. From there each can be imported as a profile, or all at once, and soju’s networks can be added, edited and deleted (BOUNCER ADDNETWORK, CHANGENETWORK and DELNETWORK). A new network can be imported as soon as it is added, and deleting one can delete its profile too. Imported profiles remember the network’s ID, so renaming a network on the bouncer renames the profile’s network with it
soju.im/bouncer-networks-notifyvendorKeeps that list current as networks are added, changed, connect, disconnect or are removed
soju.im/searchvendorSearch logs also searches the history soju keeps (SEARCH), for the conversations the search covers, on connections bound to a network. Those results are marked Bouncer, results already in your logs are shown once, and opening one fetches the messages around it with chathistory when they are not loaded
soju.im/mutedvendorA metadata key, not a capability. soju’s draft/metadata-2 holds only its own per-conversation keys, so on soju HexDroid subscribes to soju.im/muted alone, once the connection is bound. Muting a channel or private chat in HexDroid mutes it for your other soju clients and the other way round, and a change either side made while the other was away is kept when they next meet
soju.im/account-requiredvendorInformational, so never requested. When soju refuses a connection with FAIL * ACCOUNT_REQUIRED, HexDroid says to turn on SASL or set a server password, and stops reconnecting until you do
BOUNCER_NETIDvendorAn ISUPPORT token naming the network a soju connection is bound to. Recorded on the profile, so a renamed network is still recognised
soju.im/SAFERATEvendorAn ISUPPORT token: soju delays a client that sends too fast rather than disconnecting it, so HexDroid turns its own flood pacing off
soju.im/no-implicit-namesvendorSuppresses the automatic 353 NAMES list on JOIN. Skips a full names re-download on every bouncer reconnect.
soju.im/webpushvendorsoju shipped Web Push before the draft existed and still advertises the vendored name; both are negotiated. See draft/webpush above
soju.im/FILEHOSTvendorFile uploads. When the server advertises an upload endpoint, an attach button appears in the chat input: pick a file, it uploads over HTTPS with your connection credentials, and the returned URL is placed in the input ready to send. Toggleable per network.

Settings

Global settings in Settings, listed under the twelve category pages the app groups them into: Appearance, Chat & Messages, Media Previews, Aliases, Highlights, IRC, Notifications, Logging, Privacy, IRCv3 History, File transfers and Backup & Restore. The search button in the settings top bar finds a setting by its name, its description, its category or a common alternate term, across every language the app ships rather than only the one on screen. Per-network options (identity, SASL, TLS client certificates, auto-join, auto-connect, encoding, IRCv3 capabilities) live in the network editor instead. The button beside search in the top bar switches between these category pages and a single continuous page, and the network editor follows the same choice.

Appearance

SettingDescriptionDefault
LanguageApp language, or follow the system settingSystem
ThemeDark, Light, Matrix, Terminal, or System defaultDark
UI fontOpen Sans, Inter, Monospace, or a custom font fileOpen Sans
Chat fontTypeface for the message area and input, set separately from the UI fontMonospace
Chat font styleRegular, bold, italic or bold italic for the message area. IRC formatting codes still override it per spanRegular
Font sizeChat text size across all buffers100%
Chat line spacingSpace between one message and the next. Tight, Normal or Relaxed; text size is unchangedNormal
Font line heightSpace between the wrapped lines within a single message. Text size is unchangedNormal
Nicklist text sizeAdjusts the member list text on top of its pane width. Widening the pane still enlarges the text0
Compact modeTighter row spacing in the message listOff
Network tabsShow networks as tabs instead of a treeOff
Network bar above inputShow the channel switcher at the bottom of the chat, just above the message inputOff
Intro tourReplay the walkthrough of the main screens and shortcuts. Offered from the card at the top of the settings category list-

Chat & Messages

SettingDescriptionDefault
Show nick iconsPresence, away and bot markers beside nicks in the chat and the member listOn
Colourise nicksConsistent colour per nicknameOn
My nick colourAuto, or pick a custom colour for your own nickAuto
Enable mIRC coloursRender mIRC colour codes, including the full 99-colour palette, \x04RRGGBB hex colours and reverseOn
Enable ANSI coloursRender ANSI/SGR escape sequences, including 256-colour and 24-bit RGBOn
Shrink ASCII/ANSI artDetect runs of ASCII or ANSI art from the same sender and draw them as one monospace block, scaled to fit the screen so the picture lines up; a block still too wide at the smallest size scrolls sideways. Lines of ordinary text with emoji are never treated as art. If a block is misread, tap Show as text above it. Off renders every line as ordinary chat textOn
Coloured channel eventsColour join, part, quit, kick, nick and mode linesOn
Show topic barChannel topic above the message listOn
Show timestampsTimestamp each messageOn
Timestamp format (Java)Java pattern used for timestampsHH:mm:ss
Timestamp bracketsSquare, round, angle or curly brackets, a trailing dash, or none. A live sample shows the resultSquare
Timestamp colourGive timestamps their own colour from the picker, or leave them the same as the messageSame as the message
Nick bracketsBrackets around sender nicks: square, round, angle, curly, nick:, or noneAngle
Hide MOTD on connectSuppress the server message of the dayOff
Channel eventsWhich events appear in channels, as a chip for each: joins, parts, quits, nick changes, topic changes, kicks and mode changes. Hide all / Show all switches the lot. Your own nick changes and kicks against you always show, a hidden topic change still updates the topic bar, and scripts still receive every event. A channel can have its own choice in Channel settingsAll shown
Smart filterJoins, parts, quits and nick changes show only for people who spoke recently, within 5, 10, 30 or 60 minutes. A join is shown after all, at its own time, if the person speaks soon afterOff, 10 min
Hide hostnames in join/part/quit messagesLeave out the user@host, so the line reads * nick has joined #channel. Part and quit reasons, and the account name from extended-join, still show. Applies to lines from then on, logs includedOff
Hide away/back messagesSuppress away-notify eventsOff
Hide topic on entrySuppress the topic when joining a channelOff
Show network/chans by defaultOpen the buffer list automatically in landscapeOn
Show nicklist by defaultOpen the member list automatically in landscapeOn
Side pane nicklistIn portrait, show the nicklist as a resizable side pane instead of a popup, so the toggle becomes a persistent show/hideOn

Media Previews

SettingDescriptionDefault
Enable image & video previewsPreviews for images and YouTube links posted in chat. X/Twitter links resolve via fxtwitter.com. Previews are never automatic, you tap to loadOff
Wi-Fi onlyOnly load previews on Wi-Fi, to avoid using mobile dataOn

Aliases

SettingDescriptionDefault
Custom aliasesYour own slash commands, each a name and the command it expands to. Also managed with /alias list, /alias add <name> <expansion> and /alias remove <name>-

Highlights

SettingDescriptionDefault
Highlight on nickTreat mentions of your nick as highlightsOn
Extra highlight wordsAdditional trigger words, one per line, case-insensitive-

IRC

SettingDescriptionDefault
Ignore listNicks or nick!user@host masks to ignore, per network, each with its own choice of what to drop: channel messages, private messages, notices, CTCP, invites, DCC offers, and joins, parts and quits-
ScriptsLoad and manage .hex scripts: games, tools and custom commands. See Scripting-
Raw protocol logShow every line sent and received in a Raw buffer per network. Passwords are hidden. For debuggingOff
Quit messageSent when you disconnectAn IRC client for Android - https://hexdroid.org
Part messageSent when you leave a channelLeaving
Show connection status notificationPersistent notification showing connection stateOn
Keep the connection aliveForeground service that maintains the connection in the backgroundOn
Reconnect after device restartAfter the device reboots, bring back the networks marked auto-connect without opening the app. Requires “Keep the connection alive”Off
Wait for Wi-FiWith the above on, hold the reconnect until an unmetered network is up rather than connecting over mobile data. The connection status shows “Waiting for Wi-Fi” until then; opening the app connects immediatelyOff
Auto-reconnectReconnect after an unexpected disconnectionOn
Push notificationsLet servers supporting the webpush extension notify you through a UnifiedPush distributor while no connection is open. Needs a distributor app installed; the switch is disabled until one is. Independent of “Keep the connection alive”, which you can then turn off if push is workingOff
Reconnect interval (seconds)How often to retry when the connection drops10
Rejoin on kickRejoin automatically after a kick. A second kick on the same channel within 60 seconds is skipped, to avoid loops against +i/+k/+b modesOff
Regain primary nickWhen you connect on an alternate nick because yours is taken, keep trying to switch back to it for a few minutes. Turning it off also stops an attempt already in progressOn

Notifications

SettingDescriptionDefault
Enable notificationsMaster toggle for all notificationsOn
Highlight notificationsAlert when your nick or a highlight word is mentionedOn
Private message notificationsAlert on incoming private messages and DCC chat messagesOn
Sound on highlightAudible alertOff
Vibrate on highlightHaptic feedbackOff
Vibration intensityLow, Medium, or HighMedium

Logging

SettingDescriptionDefault
Enable loggingWrite chat messages to log files on deviceOff
Log server bufferAlso log server and status messagesOff
Log folderInternal storage, or a custom folder chosen via SAFInternal storage
Export logsSave the logs kept in app storage as a single .zip, through the system file picker. The button sits under Log folder, beside the space the logs use, and appears once there are logs in app storage-
Delete logsPermanently delete the logs kept in app storage for every network, after a confirmation. With a custom folder chosen, this covers only older logs still left in app storage; the folder is never touched. Open conversations keep what they've already loaded until closed or the app restarts-
Retention daysDelete logs older than N days. 0 keeps them forever14
Max scrollback linesLines per buffer kept in memory. Older lines stay in the log file800

Privacy

SettingDescriptionDefault
Send typing indicatorsLet others see when you are composing. Off by default for privacy, and only sent where the server permits the tagOff
Show others' typing indicatorsDisplay an indicator when someone else is composingOn
Read receiptsIn private messages, tell the other person when you've read their messages and see when they've read yours, shown as a double tick after your message. Sent only while the newest message is on screen. Both people need HexDroid with this on; sending and showing go togetherOff
Answer CTCP requestsReply to VERSION, TIME, PING, CLIENTINFO and similar. Turn it off to stop answering entirelyOn

IRCv3 History

SettingDescriptionDefault
History fetch limitMessages requested per channel on join via CHATHISTORY LATEST. 0 disables it50
Count fetched history as unreadMark replayed history as unreadOff
Trigger notifications for fetched historyNotify for replayed messagesOff
Load older messagesScrolling to the top of a buffer fetches the previous page from the server automatically, on top of the join-time request above. No setting: it appears only where the server supports it, and stops once the server reports nothing older-

File transfers

SettingDescriptionDefault
Enable DCCMaster toggle for all DCC featuresOff
Use SDCC (TLS encryption)Send files over TLS via DCC SSEND, and make /dcc chat a secure SCHAT. The remote client must also support SDCC. /dcc schat is always secure, and secure offers from others are accepted either wayOff
Download folderDownloads, or a custom folderDownloads
Incoming port min / maxPort range to listen on, for router forwarding5000 / 5010

Backup & Restore

ActionDescription
Export backupSave network configurations, app settings and channel settings to a JSON file. Passwords can be included, encrypted with a passphrase. TLS certificates are not included
Restore backupReplace all current networks and settings with those in a backup file. A backup holding passwords asks for its passphrase, or restores without them

DCC send mode (Active, Passive, or Auto) is chosen on the Transfers screen rather than in Settings. Auto-connect, identity, SASL, TLS, encoding and the per-network IRCv3 capability toggles are all in the network editor.